00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef XLISTCTRL_H
00016 #define XLISTCTRL_H
00017
00018 #include "XHeaderCtrl.h"
00019 #ifndef DO_NOT_INCLUDE_XCOMBOLIST
00020 #include "XComboList.h"
00021 #endif
00022
00023 extern UINT NEAR WM_XLISTCTRL_COMBO_SELECTION;
00024 extern UINT NEAR WM_XLISTCTRL_CHECKBOX_CLICKED;
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 struct XLISTCTRLDATA
00035 {
00036
00037 XLISTCTRLDATA()
00038 {
00039 bEnabled = TRUE;
00040 crText = ::GetSysColor(COLOR_WINDOWTEXT);
00041 crBackground = ::GetSysColor(COLOR_WINDOW);
00042 bShowProgress = FALSE;
00043 nProgressPercent = 0;
00044 strProgressMessage = _T("");
00045 bShowProgressMessage = TRUE;
00046 nCheckedState = -1;
00047 bBold = FALSE;
00048 nImage = -1;
00049 #ifndef NO_XLISTCTRL_TOOL_TIPS
00050 strToolTip = _T("");
00051 #endif
00052 bCombo = FALSE;
00053 bComboIsClicked = FALSE;
00054 nComboListHeight = 10;
00055 nInitialComboSel = 0;
00056 psa = NULL;
00057 dwItemData = 0;
00058 }
00059
00060 BOOL bEnabled;
00061 BOOL bBold;
00062 int nImage;
00063 #ifndef NO_XLISTCTRL_TOOL_TIPS
00064 CString strToolTip;
00065 #endif
00066
00067
00068 BOOL bCombo;
00069 BOOL bComboIsClicked;
00070 CStringArray * psa;
00071 int nComboListHeight;
00072 int nInitialComboSel;
00073
00074
00075 COLORREF crText;
00076 COLORREF crBackground;
00077
00078
00079 BOOL bShowProgress;
00080 int nProgressPercent;
00081 CString strProgressMessage;
00082
00083 BOOL bShowProgressMessage;
00084
00085
00086 int nCheckedState;
00087
00088 DWORD dwItemData;
00089 };
00090
00091
00092
00093
00094
00095 class CXListCtrl : public CListCtrl
00096 {
00097
00098 public:
00099 CXListCtrl();
00100 virtual ~CXListCtrl();
00101
00102
00103 public:
00104
00105
00106 public:
00107 int CountCheckedItems(int nSubItem);
00108 BOOL DeleteAllItems();
00109 BOOL DeleteItem(int nItem);
00110 void DeleteProgress(int nItem, int nSubItem);
00111 BOOL GetBold(int nItem, int nSubItem);
00112 int GetCheckbox(int nItem, int nSubItem);
00113 int GetColumns();
00114 CString GetComboText(int iItem, int iSubItem);
00115 int GetCurSel();
00116 BOOL GetEnabled(int nItem);
00117 DWORD GetExtendedStyleX() { return m_dwExtendedStyleX; }
00118 int GetHeaderCheckedState(int nSubItem);
00119 DWORD GetItemData(int nItem);
00120 BOOL GetSubItemRect(int iItem, int iSubItem, int nArea, CRect& rect);
00121 int InsertItem(int nItem, LPCTSTR lpszItem);
00122 int InsertItem(int nItem,
00123 LPCTSTR lpszItem,
00124 COLORREF crText,
00125 COLORREF crBackground);
00126 int InsertItem(const LVITEM* pItem);
00127 BOOL SetBold(int nItem, int nSubItem, BOOL bBold);
00128 BOOL SetComboBox(int nItem,
00129 int nSubItem,
00130 BOOL bEnableCombo,
00131 CStringArray *psa,
00132 int nComboListHeight,
00133 int nInitialComboSel);
00134 BOOL SetCheckbox(int nItem, int nSubItem, int nCheckedState);
00135 BOOL SetCurSel(int nItem);
00136 BOOL SetEnabled(int nItem, BOOL bEnable);
00137 DWORD SetExtendedStyleX(DWORD dwNewStyle)
00138 {
00139 DWORD dwOldStyle = m_dwExtendedStyleX;
00140 m_dwExtendedStyleX = dwNewStyle;
00141 return dwOldStyle;
00142 }
00143
00144 BOOL SetHeaderCheckedState(int nSubItem, int nCheckedState);
00145 int SetItem(const LVITEM* pItem);
00146 BOOL SetItemData(int nItem, DWORD dwData);
00147 BOOL SetItemImage(int nItem, int nSubItem, int nImage);
00148 BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
00149 BOOL SetItemText(int nItem,
00150 int nSubItem,
00151 LPCTSTR lpszText,
00152 COLORREF crText,
00153 COLORREF crBackground);
00154 BOOL SetProgress(int nItem,
00155 int nSubItem,
00156 BOOL bShowProgressText = TRUE,
00157 LPCTSTR lpszProgressText = NULL);
00158 void UpdateProgress(int nItem, int nSubItem, int nPercent);
00159 void UpdateSubItem(int nItem, int nSubItem);
00160
00161 #ifndef NO_XLISTCTRL_TOOL_TIPS
00162 void DeleteAllToolTips();
00163 BOOL SetItemToolTipText(int nItem, int nSubItem, LPCTSTR lpszToolTipText);
00164 CString GetItemToolTipText(int nItem, int nSubItem);
00165 virtual int OnToolHitTest(CPoint point, TOOLINFO * pTI) const;
00166 #endif
00167
00168
00169
00170
00171 public:
00172 virtual void PreSubclassWindow();
00173
00174
00175
00176 public:
00177 CXHeaderCtrl m_HeaderCtrl;
00178 CImageList m_cImageList;
00179
00180 protected:
00181 void DrawCheckbox(int nItem,
00182 int nSubItem,
00183 CDC *pDC,
00184 COLORREF crText,
00185 COLORREF crBkgnd,
00186 CRect& rect,
00187 XLISTCTRLDATA *pCLD);
00188 #ifndef DO_NOT_INCLUDE_XCOMBOLIST
00189 void DrawComboBox(int nItem,
00190 int nSubItem,
00191 CDC *pDC,
00192 COLORREF crText,
00193 COLORREF crBkgnd,
00194 CRect& rect,
00195 XLISTCTRLDATA *pCLD);
00196 void UnpressComboButton();
00197 #endif
00198 int DrawImage(int nItem,
00199 int nSubItem,
00200 CDC* pDC,
00201 COLORREF crText,
00202 COLORREF crBkgnd,
00203 CRect rect,
00204 XLISTCTRLDATA *pXLCD);
00205 void DrawProgress(int nItem,
00206 int nSubItem,
00207 CDC *pDC,
00208 COLORREF crText,
00209 COLORREF crBkgnd,
00210 CRect& rect,
00211 XLISTCTRLDATA *pCLD);
00212 void DrawText(int nItem,
00213 int nSubItem,
00214 CDC *pDC,
00215 COLORREF crText,
00216 COLORREF crBkgnd,
00217 CRect& rect,
00218 XLISTCTRLDATA *pCLD);
00219 void GetDrawColors(int nItem,
00220 int nSubItem,
00221 COLORREF& colorText,
00222 COLORREF& colorBkgnd);
00223 void SubclassHeaderControl();
00224
00225 BOOL m_bHeaderIsSubclassed;
00226 DWORD m_dwExtendedStyleX;
00227
00228 COLORREF m_cr3DFace;
00229 COLORREF m_cr3DHighLight;
00230 COLORREF m_cr3DShadow;
00231 COLORREF m_crBtnFace;
00232 COLORREF m_crBtnShadow;
00233 COLORREF m_crBtnText;
00234 COLORREF m_crGrayText;
00235 COLORREF m_crHighLight;
00236 COLORREF m_crHighLightText;
00237 COLORREF m_crWindow;
00238 COLORREF m_crWindowText;
00239
00240 #ifndef DO_NOT_INCLUDE_XCOMBOLIST
00241 BOOL m_bComboIsClicked;
00242 int m_nComboItem;
00243 int m_nComboSubItem;
00244 CRect m_rectComboButton;
00245 CRect m_rectComboList;
00246 CXComboList * m_pListBox;
00247 CFont m_ListboxFont;
00248 BOOL m_bFontIsCreated;
00249 CString m_strInitialComboString;
00250 #endif
00251
00252
00253
00254 protected:
00255
00256 afx_msg BOOL OnClick(NMHDR* pNMHDR, LRESULT* pResult);
00257 afx_msg BOOL OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult);
00258 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
00259 afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
00260 afx_msg void OnDestroy();
00261 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
00262 afx_msg void OnPaint();
00263 afx_msg void OnSysColorChange();
00264
00265 #ifndef DO_NOT_INCLUDE_XCOMBOLIST
00266 afx_msg void OnTimer(UINT nIDEvent);
00267 afx_msg LRESULT OnComboEscape(WPARAM, LPARAM);
00268 afx_msg LRESULT OnComboReturn(WPARAM, LPARAM);
00269 afx_msg LRESULT OnComboKeydown(WPARAM, LPARAM);
00270 afx_msg LRESULT OnComboLButtonUp(WPARAM, LPARAM);
00271 #endif
00272
00273 #ifndef NO_XLISTCTRL_TOOL_TIPS
00274 virtual afx_msg BOOL OnToolTipText(UINT id, NMHDR * pNMHDR, LRESULT * pResult);
00275 #endif
00276
00277 DECLARE_MESSAGE_MAP()
00278 };
00279
00280
00281
00282
00283
00284
00285 #endif //XLISTCTRL_H